A video image is formed from a sequence of frames displayed in rapid succession. A video source, such as a camera, may capture individual frames for storage in a memory at an input frame rate. The frames are read out from the memory and transmitted to a display device at an output frame rate for display. An artifact known as “image tearing” can occur when a new frame is stored in the memory at the same time that a previously stored frame is being read out for transmission to the display. If the storing of the new frame overtakes the reading of the previous frame, the displayed image will be a composite of the new and previous frames, and objects that appear in different locations in the two frames will be inaccurately rendered.
To prevent image tearing, a double-buffer technique may be used. The technique requires that the memory be divided into two equally sized buffers, each of sufficient size to store one frame. Generally, the video source writes successive frames to alternate buffers. A frame is read out for display from the buffer last completely updated by the video source. While the video source is writing a frame to a first buffer, a previously stored frame is read out of a second buffer and written to the display device.
A problem sometimes arises, however, when the double-buffer technique is used. The problem is that instead of displaying normal video, the video image freezes on the display device for an abnormally long period of time. This problem is quite objectionable to viewers.
Accordingly, there is a need for methods and apparatus for double-buffering video data in a manner which makes the undesirable image freezing effect inconspicuous.